package com.admin.system.modules.system.service;

import com.admin.common.utils.PageResult;
import com.admin.core.dto.UserPasswordDTO;
import com.admin.core.dto.UserQueryDTO;
import com.admin.core.entity.SysUser;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @author sq-lan
 */
public interface UserService extends IService<SysUser> {

    /**
     * 查询全部
     *
     * @param dto 条件
     * @return /
     */
    PageResult<SysUser> paging(UserQueryDTO dto);

    /**
     * 查询
     *
     * @param dto 条件
     * @return /
     */
    List<SysUser> list(UserQueryDTO dto);

    /**
     * 编辑用户
     *
     * @param entity /
     * @throws Exception /
     */
    void modify(SysUser entity) throws Exception;

    /**
     * 删除用户
     *
     * @param ids /
     */
    void remove(Set<Integer> ids);

    /**
     * 新增
     *
     * @param entity /
     */
    void add(SysUser entity);

    /**
     * 用户自助修改资料
     *
     * @param entity /
     */
    void modifyMy(SysUser entity);

    /**
     * 修改密码
     *
     * @param dto /
     * @throws Exception 例外
     */
    void updatePassword(UserPasswordDTO dto) throws Exception;

    /**
     * 修改邮箱
     *
     * @param code   密码
     * @param entity 实体
     * @throws Exception 例外
     */
    void updateEmail(String code, SysUser entity) throws Exception;

    /**
     * 修改头像
     *
     * @param file 文件
     * @return /
     */
    Map<String, String> updateAvatar(MultipartFile file);

}
